package com.yuliang.ai.domain.Dto;

import lombok.Data;

import java.util.List;

/**
 * @author Huangkai
 */
@Data
public class ScenicDetailWithSkusAndPriceDto {
    /**
     * 景区id
     */
    private String scenicId;
    /**
     * 景区编码
     */
    private String scenicCode;
    /**
     * 景区编码
     */
    private String sourceCode;
    /**
     * 景区名称
     */
    private String scenicName;
    /**
     * 地址
     */
    private String address;
    /**
     * 二级分类
     */
    private String secondTypes;
    /**
     * 销量
     */
    private String salesVol;
    /**
     * 评分
     */
    private String evaluate;
    /**
     * 销售标签
     */
    private String saleTags;
    /**
     * 城市编码
     */
    private String cityCode;
    /**
     * 城市名称
     */
    private String city;
    /**
     * 营业时间
     */
    private String businessTime;
    /**
     * 封面图片
     */
    private String coverPic;
    /**
     * 景区图片
     */
    private List<Pic> pics;
    /**
     * 位置坐标
     */
    private String location;
    /**
     * 收藏
     */
    private String collect;
    /**
     * 图文描述
     */
    private String description;
    /**
     * 入园政策
     */
    private List<EnterPolicy> enterPolicies;
    /**
     * 最近可售日期文本
     */
    private String lastCanSaleDateStr;
    /**
     * 优待政策
     */
    private List<PreferentialPolicy> preferentialPolicies;
    /**
     * 服务设施
     */
    private List<ServiceFacility> serviceFacilities;
    /**
     * 附近poi
     */
    private List<NearPois> nearPois;
    /**
     * 景区级别
     */
    private String level;
    /**
     * 资源类型
     */
    private String proType;
    /**
     * 票型
     */
    private List<Ticket> tickets;
    /**
     * 电话
     */
    private String tel;
    /**
     * 视频
     */
    private String video;
    /**
     * 开始时间
     */
    private List<Notice> notices;
    /**
     * 公告
     */
    private List<TicketPrice> ticketPrices;
    /**
     * 票价
     */
    private List<TicketDayPrice> ticketDayPrices;
    /**
     * 优惠券和促销活动
     */
    private List<ActivityOrCoupon> activityOrCoupons;

    @Data
    public static class ServiceFacility{
        /**
         * 服务设施key
         */
        private String key;
        /**
         * 服务设施名称
         */
        private String name;
        /**
         * 服务设施简介
         */
        private String value;
        /**
         * 选中的图标
         */
        private String selectedIconUrl;
        /**
         * 未选中的图标
         */
        private String unSelectIconUrl;
    }

    @Data
    public static class PreferentialPolicy{
        /**
         * 适用人群key
         */
        private String personKey;
        /**
         * 适用人群名称
         */
        private String personName;
        /**
         * 优待政策key
         */
        private String preferentialKey;
        /**
         * 优待政策内容
         */
        private String preferentialName;
        /**
         * 适用条件
         */
        private String preferentialCondition;
    }

    @Data
    public static class Pic{
        /**
         * 图片类型
         */
        private String picType;
        /**
         * 图片地址
         */
        private String picUrl;

    }
    @Data
    public static class EnterPolicy{
        /**
         * 政策key
         */
        private String key;
        /**
         * 政策名称
         */
        private String name;
        /**
         * 政策内容
         */
        private String value;
    }
    @Data
    public static class Ticket{
        /**
         * 票种id
         */
        private String ticketId;
        /**
         * 票种编码
         */
        private String ticketCode;
        /**
         * 票种名称
         */
        private String ticketName;
        /**
         * 适用人群
         */
        private String crowdType;
        /**
         * 适用人群名称
         */
        private String crowdTypeTxt;
        /**
         * 取票政策
         */
        private String exchangeWay;
        /**
         * 取票政策名称
         */
        private String exchangeWayTxt;
        /**
         * 票种类型
         * 1-官方票种 2-非官方票种
         */
        private String ticketKind;
        /**
         * sku
         */
        private List<Sku> skus;

        @Data
        public static class Sku{
            /**
             * 政策内容
             */
            private String ticketKind;
        }
    }

    @Data
    public static class NearPois{
        /**
         * poi名称
         */
        private String poiName;
        /**
         * 距离当前资源的距离. 单位 公里
         */
        private Float distance;
        /**
         * POI类型
         */
        private String poiType;
        /**
         * 距离单位
         */
        private String unit;
        /**
         * GPS坐标，逗号分隔
         */
        private String location;
        /**
         * 封面图片
         */
        private String coverPic;
        /**
         * 地址
         */
        private String address;
        /**
         * 联系电话
         */
        private Tel tels;

        @Data
        public static class Tel{
            /**
             * 电话类型分类
             */
            private Integer category;
            /**
             * 电话号码
             */
            private String telNumber;
        }
    }
    @Data
    public static class Notice{
        /**
         * 公告/须知ID
         */
        private String id;
        /**
         * 公告/须知名称
         */
        private String title;
        /**
         * 类型编码
         */
        private String typeCode;
        /**
         * 类型名称
         */
        private String typeName;
        /**
         * 公告/须知内容
         */
        private String noticeDetail;
        /**
         * 公告/须知最新修改时间
         */
        private String modifyTime;

    }
    @Data
    public static class TicketPrice{
        /**
         * 景点/酒店编码
         */
        private String sourceCode;
        /**
         * 房型/票种编码
         */
        private String sourceModelCode;
        /**
         * 销售价
         */
        private Float salePrice;
        /**
         * 挂牌价
         */
        private Float showPrice;
        /**
         * 状态
         */
        private Integer state;
        /**
         * 供应商编码
         */
        private String etp;
        /**
         * 库存
         */
        private Integer stock;
        /**
         * 销售日期: eg: 2024-01-01
         */
        private String priceDate;
    }
    @Data
    public static class TicketDayPrice{
        /**
         * 日期
         */
        private String priceDate;
        /**
         * 状态
         */
        private String status;
        /**
         * 票价列表
         */
        private List<TicketPrice> ticketPrices;

        @Data
        public static class TicketPrice{
            /**
             * 景点/酒店编码
             */
            private String sourceCode;
            /**
             * 房型/票种编码
             */
            private String sourceModelCode;
            /**
             * 销售价
             */
            private Float salePrice;
            /**
             * 挂牌价
             */
            private Float showPrice;
            /**
             * 状态
             */
            private Integer state;
            /**
             * 供应商编码
             */
            private String etp;
            /**
             * 库存
             */
            private Integer stock;
            /**
             * 销售日期: eg: 2024-01-01
             */
            private String priceDate;
        }
    }

    @Data
    public static class ActivityOrCoupon{
        /**
         * 促销活动/优惠券ID
         */
        private String activityOrCouponId;
        /**
         * 促销活动/优惠券类型编码
         */
        private String activityOrCouponCode;
        /**
         * 领券活动ID
         */
        private String mktActivityId;
        /**
         * 领券规则ID
         */
        private String ruleId;
        /**
         * 券面值
         */
        private String couFaceValue;
        /**
         * 用券最大限制
         */
        private String couThresholdMaxValue;
        /**
         * 用券最低限制金额
         */
        private String couThresholdMinValues;
        /**
         * 营销形式：promotion 促销/coupon 优惠券
         */
        private String discountType;
        /**
         * 活动类型
         */
        private String activityType;
        /**
         * 活动主题
         */
        private String activityTopic;

        /**
         * 活动名称/券名称
         */
        private String activityOrCouponName;
        /**
         * 活动短标签
         */
        private String activityShortTag;
        /**
         * 活动长标签
         */
        private String activityLongTag;
        /**
         * 是否可以与优惠券叠加
         */
        private String isOverlyingCoupon;
        /**
         * 业务类型 * CH 酒店 * CT 景区/景点 * TR 线路 * CP 组合商品
         */
        private String businessType;
        /**
         * 活动开始时间
         */
        private String beginTime;
        /**
         * 活动结束时间
         */
        private String endTime;
        /**
         * 参与的星期day
         */
        private String weekDays;
        /**
         * 不参与的星期day
         */
        private String forbidWeekDays;
        /**
         * 禁止参与的天
         */
        private String forbidDays;
        /**
         * 活动的开展时间类型：* 下单日期 * 入住日期/出行日期
         */
        private String activityTimeType;
        /**
         * 优惠券和促销活动的SKU
         */
        private List<CanUseSku> canUseSkus;
        /**
         * 优惠券和促销活动的SKU
         */
        private List<NotCanUseSku> notCanUseSkus;
        /**
         * 是否限制用户
         */
        private Boolean isLimitUser;
        /**
         * 是否全部酒店/景点/线路/组合产品可用
         */
        private Boolean isAllCanUse;
        /**
         * 使用说明
         */
        private String description;
        /**
         * 优惠券开始时间
         */
        private String validBeginTime;
        /**
         * 优惠券结束时间
         */
        private String validendTime;

        @Data
        public static class CanUseSku{
            /**
             * 酒店/景区编码
             */
            private String sourceCode;
            /**
             * 房型/票种编码
             */
            private String sourceModelCode;
            /**
             * 产品ID
             */
            private String spuId;
            /**
             * 产品编码
             */
            private String spuCode;
            /**
             * skuId
             */
            private String skuId;
        }
        @Data
        public static class NotCanUseSku{
            /**
             * 酒店/景区编码
             */
            private String sourceCode;
            /**
             * 房型/票种编码
             */
            private String sourceModelCode;
            /**
             * 产品ID
             */
            private String spuId;
            /**
             * 产品编码
             */
            private String spuCode;
            /**
             * skuId
             */
            private String skuId;
        }
    }
}
